home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / devel / tcl / tclx7_31.z / tclx7_31 / tcldev / tclX7.3a-p1 / Makefile.in < prev    next >
Encoding:
Makefile  |  1994-01-23  |  13.2 KB  |  372 lines

  1. #
  2. # Makefile --
  3. #
  4. # Top-level makefile for Extended Tcl.
  5. #------------------------------------------------------------------------------
  6. # Copyright 1992-1993 Karl Lehenbauer and Mark Diekhans.
  7. #
  8. # Permission to use, copy, modify, and distribute this software and its
  9. # documentation for any purpose and without fee is hereby granted, provided
  10. # that the above copyright notice appear in all copies.  Karl Lehenbauer and
  11. # Mark Diekhans make no representations about the suitability of this
  12. # software for any purpose.  It is provided "as is" without express or
  13. # implied warranty.
  14. #------------------------------------------------------------------------------
  15. # $Id: Makefile.in,v 3.5 1994/01/23 04:41:38 markd Exp $
  16. #------------------------------------------------------------------------------
  17. #
  18. SHELL=/bin/sh
  19.  
  20. #------------------------------------------------------------------------------
  21. # Autoconfig defines that can be overridden in Config.mk
  22.  
  23. CC                = @CC@
  24. RANLIB            = @RANLIB@
  25. srcdir            = @srcdir@
  26. srcbasedir        = @srcbasedir@
  27. bldbasedir        = @bldbasedir@
  28. VPATH             = @srcdir@
  29. prefix            = /usr/local
  30. exec_prefix       = /usr/local
  31. ARCH              = @TCL_ARCH@
  32. MAN_DIR_SEPARATOR = @MAN_DIR_SEPARATOR@
  33. TCL_INST_MASTER   = ${TCL_MASTERDIR}/`tools/tclxversion`
  34. TK_INST_MASTER    = ${TK_MASTERDIR}/`tools/tkxversion`
  35.  
  36. #------------------------------------------------------------------------------
  37. # Include user-editable defines.
  38.  
  39. @MAKEINCLUDE@ @MAKEQUOTE@${bldbasedir}/Config.mk@MAKEQUOTE@
  40.  
  41. #------------------------------------------------------------------------------
  42. # Other macros.
  43.  
  44. LIBTCL.A   = tclmaster/lib${ARCH}/libtcl.a
  45. TCL.H      = tclmaster/include/tcl.h
  46. LIBTK.A    = tkmaster/lib${ARCH}/libtk.a
  47. TK.H       = tkmaster/include/tk.h
  48. INSTCOPY   = ./runtcl tools/instcopy
  49. CPMANPAGES = ./runtcl ${bldbasedir}/tools/cpmanpages
  50.  
  51. #------------------------------------------------------------------------------
  52. # Flags that were passed on the command line that are to be passed on to
  53. # second level makes.
  54.  
  55. PASS_FLAGS = "CC=$(CC)" "CFLAGS=$(CFLAGS)"
  56.  
  57. #------------------------------------------------------------------------------
  58. # The made.tmp files are used to indicate a makefile has successfully added
  59. # it's .o files to a library.  We need to purge the right ones one a new
  60. # library is copied.
  61.  
  62. TCLMADE.TMP = osSupport/made.tmp src/made.tmp
  63. TKMADE.TMP  = tksrc/made.tmp
  64.  
  65. #------------------------------------------------------------------------------
  66.  
  67. all: TCLX runtcl ${TK_BUILD}
  68.  
  69. #------------------------------------------------------------------------------
  70. # Compile the Extended Tcl library and link the Tcl shell.
  71. #
  72.  
  73. TCLX: TCLCOPY runtcl
  74.     cd tools;     ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  75.     cd osSupport; ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  76.     cd src;       ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  77.     cd tclsrc;    ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  78.  
  79. #------------------------------------------------------------------------------
  80. # Copy include and library files from the UCB Tcl distribution to the
  81. # tclmaster directory.
  82. #
  83. TCLCOPY: MKTCLDIRS ${LIBTCL.A} ${TCL.H}
  84.  
  85. MKTCLDIRS:
  86.     -mkdir tclmaster                2>/dev/null; exit 0
  87.     -mkdir tclmaster/lib${ARCH}     2>/dev/null; exit 0
  88.     -mkdir tclmaster/include        2>/dev/null; exit 0
  89.     -mkdir tclmaster/bin${ARCH}     2>/dev/null; exit 0
  90.     -mkdir tclmaster/src            2>/dev/null; exit 0
  91.  
  92. ${LIBTCL.A}: ${TCL_UCB_LIB}/libtcl.a
  93.     rm -f ${LIBTCL.A}
  94.     cp ${TCL_UCB_LIB}/libtcl.a ${LIBTCL.A}
  95.     ${RANLIB} ${LIBTCL.A}
  96.  
  97. ${TCL.H}: ${TCL_UCB_SRC}/tcl.h
  98.     rm -f ${TCL.H}
  99.     cp ${TCL_UCB_SRC}/tcl.h ${TCL.H}
  100.  
  101. #------------------------------------------------------------------------------
  102. # Generate a wish shell {wishx} with Extended Tcl commands.
  103. #
  104.  
  105. WISHX: TKCOPY runwishx
  106.     cd tksrc;    ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  107.     cd tktclsrc; ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} all
  108.  
  109. #------------------------------------------------------------------------------
  110. # Copy include and library files from the UCB Tk distribution to the
  111. # tkmaster directory.
  112. #
  113.  
  114. TKCOPY: MKTKDIRS ${LIBTK.A} ${TK.H}
  115.  
  116. MKTKDIRS:
  117.     -mkdir tkmaster                2>/dev/null; exit 0
  118.     -mkdir tkmaster/lib${ARCH}     2>/dev/null; exit 0
  119.     -mkdir tkmaster/include        2>/dev/null; exit 0
  120.     -mkdir tkmaster/bin${ARCH}     2>/dev/null; exit 0
  121.     -mkdir tkmaster/src            2>/dev/null; exit 0
  122.  
  123. ${LIBTK.A}: ${TK_UCB_LIB}/libtk.a
  124.     rm -f ${LIBTK.A}
  125.     cp ${TK_UCB_LIB}/libtk.a ${LIBTK.A}
  126.     ${RANLIB} ${LIBTK.A}
  127.  
  128. ${TK.H}: ${TK_UCB_SRC}/tk.h
  129.     rm -f ${TK.H}
  130.     cp ${TK_UCB_SRC}/tk.h ${TK.H}
  131.  
  132. #------------------------------------------------------------------------------
  133. # Generate scripts to point the TCL_LIBRARY/TK_LIBRARY environment variable at
  134. # the local master directories so tcl & wishx can be run before installing.
  135.  
  136. runtcl:
  137.     @echo ':'                                                  >runtcl
  138.     @echo '# script for testing Tcl before installation'      >>runtcl
  139.     @echo "TCL_LIBRARY=`pwd`/tclmaster"                       >>runtcl
  140.     @echo "TCL_PROGRAM=`pwd`/tclmaster/bin${ARCH}/tcl"        >>runtcl
  141.     @echo "export TCL_LIBRARY TCL_PROGRAM"                    >>runtcl
  142.     @echo "if [ \$$# = 0 ]"                                   >>runtcl
  143.     @echo "then"                                              >>runtcl
  144.     @echo "    exec \$$TCL_PROGRAM"                           >>runtcl
  145.     @echo "else"                                              >>runtcl
  146.     @echo "    exec \$$TCL_PROGRAM \"\$$@\""                  >>runtcl
  147.     @echo "fi"                                                >>runtcl
  148.     chmod a+rx runtcl
  149.  
  150. runwishx:
  151.     @echo ':'                                                  >runwishx
  152.     @echo '# script for testing wishx before installation'    >>runwishx
  153.     @echo "TCL_LIBRARY=`pwd`/tclmaster"                       >>runwishx
  154.     @echo "TK_LIBRARY=`pwd`/tkmaster"                         >>runwishx
  155.     @echo "TCL_PROGRAM=`pwd`/tclmaster/bin${ARCH}/tcl"        >>runwishx
  156.     @echo "WISHX=`pwd`/tkmaster/bin${ARCH}/wishx"             >>runwishx
  157.     @echo "export TCL_LIBRARY TK_LIBRARY TCL_PROGRAM"         >>runwishx
  158.     @echo "if [ \$$# = 0 ]"                                   >>runwishx
  159.     @echo "then"                                              >>runwishx
  160.     @echo "    exec \$$WISHX"                                 >>runwishx
  161.     @echo "else"                                              >>runwishx
  162.     @echo "    exec \$$WISHX \"\$$@\""                        >>runwishx
  163.     @echo "fi"                                                >>runwishx
  164.     chmod a+rx runwishx
  165.  
  166. #------------------------------------------------------------------------------
  167. # Test to see if the C++ include file compiles and links.
  168.  
  169. tcl++:
  170.     cd src;${MAKE} -${MAKEFLAGS} tcl++
  171.  
  172. #------------------------------------------------------------------------------
  173. # Run the UCB and Extended Tcl tests.
  174.  
  175. test: ucbtests extdtests
  176.  
  177. ucbtests: all
  178.     @echo "***************************************************************"
  179.     @echo "*** Expect warnings about not having the following commands:"
  180.     @echo "***     testasync"
  181.     @echo "***     testcmdinfo"
  182.     @echo "***     testdcall"
  183.     @echo "***     testdstring"
  184.     @echo "***     testlink"
  185.     @echo "***"
  186.     @echo "*** Expect warnings about not having the following math functions:"
  187.     @echo "***     T1"
  188.     @echo "***     T2"
  189.     @echo "***************************************************************"
  190.     @echo ""
  191.     ./runtcl -c "cd ${TCL_UCB_SRC}/tests;source ${srcbasedir}/tests/all"
  192.  
  193. extdtests: all
  194.     ./runtcl -c "cd tests;source all"
  195.  
  196. tktest: all
  197.     @echo "***************************************************************"
  198.     @echo "*** Expect warnings about not having the following commands:"
  199.     @echo "***     testmakexists"
  200.     @echo "***************************************************************"
  201.     @echo ""
  202.     cd ${srcdir}/tktests ;\
  203.         ${bldbasedir}/runwishx -f tktests.tcl -n wish ${TK_UCB_SRC}
  204.  
  205. #------------------------------------------------------------------------------
  206. # Rebuild help files.  The are shipped with TclX, but can be rebuilt if Tcl or
  207. # Tk versions have changed.
  208.  
  209. buildhelp: buildtclhelp buildtkhelp
  210.  
  211. buildtclhelp:
  212.     cd tclsrc;   ${MAKE} -${MAKEFLAGS} buildtclhelp
  213.  
  214. buildtkhelp:
  215.     cd tktclsrc; ${MAKE} -${MAKEFLAGS} buildtkhelp
  216.  
  217. #------------------------------------------------------------------------------
  218. # Install Extended Tcl using the standard model
  219.  
  220. install: all TCLXINSTALL TCLXINSTALL-EXEC \
  221.              ${TK_BUILD}MAYBE ${TK_BUILD}MAYBE-EXEC
  222.  
  223. install-exec: all TCLXINSTALL-EXEC ${TK_BUILD}MAYBE-EXEC
  224.  
  225. TCLXINSTALL:
  226.     @echo ""
  227.     @echo "   Install Extended Tcl using standard model"
  228.     @echo ""
  229.     rm -rf ${TCL_INST_MASTER}
  230.     ${INSTCOPY} tclmaster/*.tcl tclmaster/*.tlib tclmaster/*.tndx \
  231.        tclmaster/help tclmaster/src ${TCL_INST_MASTER}
  232.     ${INSTCOPY} tclmaster/include/tclExtend.h tclmaster/include/tcl++.h \
  233.        ${TCL_INCLUDEDIR}
  234.     ${CPMANPAGES} -rmcat @${MAN_DIR_SEPARATOR}@ \
  235.         ${TCL_MAN_CMD_SECTION} ${TCL_MAN_FUNC_SECTION} @@ \
  236.         ${srcbasedir}/man ${TCL_MAN_BASEDIR}
  237.  
  238. TCLXINSTALL-EXEC:
  239.     ${INSTCOPY} tclmaster/bin${ARCH}/tcl ${TCL_BINDIR}
  240.     ${INSTCOPY} tclmaster/lib${ARCH}/libtclx.a ${TCL_LIBDIR}
  241.     ${RANLIB} ${TCL_LIBDIR}/libtclx.a
  242.  
  243. TKXINSTALL:
  244.     rm -rf ${TK_INST_MASTER}
  245.     ${INSTCOPY} tkmaster/*.tcl tkmaster/*.tlib tkmaster/*.tndx \
  246.        tkmaster/help tkmaster/src tkmaster/*.ps tkmaster/demos \
  247.        ${TK_INST_MASTER}
  248.  
  249. TKXINSTALL-EXEC:
  250.     ${INSTCOPY} tkmaster/bin${ARCH}/wishx ${TCL_BINDIR}
  251.     ${INSTCOPY} tkmaster/bin${ARCH}/tclhelp ${TCL_BINDIR}
  252.     ${INSTCOPY} tkmaster/lib${ARCH}/libtkx.a ${TCL_LIBDIR}
  253.     ${RANLIB} ${TCL_LIBDIR}/libtkx.a
  254.  
  255. # Fake targets to decide if we install wishx or not.
  256.  
  257. MAYBE:
  258. MAYBE-EXEC:
  259.  
  260. WISHXMAYBE: TKXINSTALL
  261. WISHXMAYBE-EXEC: TKXINSTALL-EXEC
  262.  
  263. #------------------------------------------------------------------------------
  264. # Install Extended Tcl using the master directory model.
  265.  
  266. install-master: all MASTER-NOTE TCLXMINSTALL ${TK_BUILD}MMAYBE
  267.  
  268. install-master-exec: all MASTER-NOTE TCLXMINSTALL-EXEC ${TK_BUILD}MMAYBE-EXEC
  269.  
  270. MASTER-NOTE:
  271.     @echo ""
  272.     @echo "*************************************************************"
  273.     @echo "*** TclX currently builds symbolic links to the bin files ***"
  274.     @echo "*** in the master directories.  If you need links to the  ***"
  275.     @echo "*** include or man files you must build them by hand.     ***"
  276.     @echo "*************************************************************"
  277.     @echo ""
  278.  
  279. TCLXMINSTALL:
  280.     @echo ""
  281.     @echo "   Install TclX master directory"
  282.     @echo ""
  283.     rm -rf ${TCL_INST_MASTER}
  284.     ${INSTCOPY} -dirname tclmaster ${TCL_INST_MASTER}
  285.     ${RANLIB} ${TCL_INST_MASTER}/lib${ARCH}/*.a
  286.     ${CPMANPAGES} @${MAN_DIR_SEPARATOR}@ \
  287.         ${TCL_MAN_CMD_SECTION} ${TCL_MAN_FUNC_SECTION} @@ \
  288.         ${TCL_UCB_SRC}/doc ${TCL_INST_MASTER}/man
  289.     ${CPMANPAGES} @${MAN_DIR_SEPARATOR}@ \
  290.         ${TCL_MAN_CMD_SECTION} ${TCL_MAN_FUNC_SECTION} @@ \
  291.         ${srcbasedir}/man ${TCL_INST_MASTER}/man
  292.     test -d ${TCL_BINDIR} || mkdir ${TCL_BINDIR}
  293.     rm -f ${TCL_BINDIR}/tcl
  294.     ln -s ${TCL_INST_MASTER}/bin${ARCH}/tcl ${TCL_BINDIR}/tcl
  295.  
  296. TCLXMINSTALL-EXEC:
  297.     @echo ""
  298.     @echo "   Install TclX executables only"
  299.     @echo ""
  300.     ${INSTCOPY} tclmaster/bin${ARCH} ${TCL_INST_MASTER}
  301.     ${INSTCOPY} tclmaster/lib${ARCH} ${TCL_INST_MASTER}
  302.     ${RANLIB} ${TCL_INST_MASTER}/lib${ARCH}/*.a
  303.     test -d ${TCL_BINDIR} || ${TCL_BINDIR}
  304.     rm -f ${TCL_BINDIR}/tcl
  305.     ln -s ${TCL_INST_MASTER}/bin${ARCH}/tcl ${TCL_BINDIR}/tcl
  306.  
  307.  
  308. TKXMINSTALL:
  309.     @echo ""
  310.     @echo "   Install TkX master directory"
  311.     @echo ""
  312.     rm -rf ${TK_INST_MASTER}
  313.     ${INSTCOPY} -dirname tkmaster ${TK_INST_MASTER}
  314.     ${RANLIB} ${TK_INST_MASTER}/lib${ARCH}/*.a
  315.     ${CPMANPAGES} @${MAN_DIR_SEPARATOR}@ \
  316.         ${TK_MAN_CMD_SECTION} ${TK_MAN_FUNC_SECTION} \
  317.         ${TK_MAN_UNIXCMD_SECTION} \
  318.         ${TK_UCB_SRC}/doc ${TK_INST_MASTER}/man
  319.     test -d ${TCL_BINDIR} || mkdir ${TCL_BINDIR}
  320.     rm -f ${TCL_BINDIR}/wishx
  321.     ln -s ${TK_INST_MASTER}/bin${ARCH}/wishx ${TCL_BINDIR}/wishx
  322.     rm -f ${TCL_BINDIR}/tclhelp
  323.     ln -s ${TK_INST_MASTER}/bin${ARCH}/tclhelp ${TCL_BINDIR}/tclhelp
  324.  
  325. TKXMINSTALL-EXEC:
  326.     @echo ""
  327.     @echo "   Install TkX executables only"
  328.     @echo ""
  329.     ${INSTCOPY} tkmaster/bin${ARCH} ${TK_INST_MASTER}
  330.     ${INSTCOPY} tkmaster/lib${ARCH} ${TK_INST_MASTER}
  331.     ${RANLIB} ${TK_INST_MASTER}/lib${ARCH}/*.a
  332.     test -d ${TCL_BINDIR} || mkdir ${TCL_BINDIR}
  333.     rm -f ${TCL_BINDIR}/wishx
  334.     ln -s ${TK_INST_MASTER}/bin${ARCH}/wishx ${TCL_BINDIR}/wishx
  335.     rm -f ${TCL_BINDIR}/tclhelp
  336.     ln -s ${TK_INST_MASTER}/bin${ARCH}/tclhelp ${TCL_BINDIR}/tclhelp
  337.  
  338. # Fake targets to decide if we install wishx or not.
  339.  
  340. MMAYBE:
  341. MMAYBE-EXEC:
  342.  
  343. WISHXMMAYBE: TKXMINSTALL
  344. WISHXMMAYBE-EXEC: TKXMINSTALL-EXEC
  345.  
  346. #------------------------------------------------------------------------------
  347. # Clean up all files that were built by make.
  348.  
  349. clean:
  350.     cd tools;     ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  351.     cd osSupport; ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  352.     cd src;       ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  353.     cd tclsrc;    ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  354.     cd tksrc;     ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  355.     cd tktclsrc;  ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} clean
  356.     -rm -f runtcl runwishx
  357.     -rm -rf tclmaster tkmaster
  358.  
  359. #------------------------------------------------------------------------------
  360. # Restore to the distributed state.
  361.  
  362. distclean: clean
  363.     cd tools;     ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  364.     cd osSupport; ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  365.     cd src;       ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  366.     cd tclsrc;    ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  367.     cd tksrc;     ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  368.     cd tktclsrc;  ${MAKE} -${MAKEFLAGS} ${PASS_FLAGS} distclean
  369.     rm -f Makefile config.status
  370.  
  371.